package com.quanxiaoha.framework.common.response;

import com.quanxiaoha.framework.common.exception.BaseExceptionInterface;
import com.quanxiaoha.framework.common.exception.BizException;
import lombok.Data;

import java.io.Serializable;
@Data
public class Response<T> implements Serializable {
   private boolean success = true;
   private String message;
   private T data;
   private String errorCode;

   public static <T> Response<T> success(){
       Response<T> response = new Response<>();
       return response;
   }

   public static <T> Response<T> success(T data){
      Response<T> response = new Response<>();
      response.setData(data);
      return response;
   }

   public static <T> Response<T> fail(){
      Response<T> response = new Response<>();
      response.setSuccess(false);
      return response;
   }

   public static <T> Response<T> fail(String errorMessage){
      Response<T> response = new Response<>();
      response.setSuccess(false);
      response.setMessage(errorMessage);
      return response;
   }

   public static <T> Response<T> fail(String errorCode, String errorMessage){
      Response<T> response = new Response<>();
      response.setSuccess(false);
      response.setMessage(errorMessage);
      response.setErrorCode(errorCode);
      return response;
   }

   public static <T> Response<T> fail(BizException bizException){
      Response<T> response = new Response<>();
      response.setSuccess(false);
      response.setMessage(bizException.getErrorMessage());
      response.setErrorCode(bizException.getErrorCode());
      return response;
   }

   public static <T> Response<T> fail(BaseExceptionInterface baseExceptionInterface){
      Response<T> response = new Response<>();
      response.setSuccess(false);
      response.setMessage(baseExceptionInterface.getErrorMessage());
      response.setErrorCode(baseExceptionInterface.getErrorCode());
      return response;
   }
}

